home *** CD-ROM | disk | FTP | other *** search
/ Delphi 2.0 - Programmer's Utilities Power Pack / Delphi 2.0 Programmer's Utilities Power Pack.iso / e_to_l / iwp_sw1 / manual.txt < prev   
Encoding:
Text File  |  1996-09-15  |  25.9 KB  |  696 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11. Indigo Software
  12. VCL Widget Pack Volume 1
  13.  
  14.  
  15. ⌐ 1996 Indigo Software
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26. The Indigo Software VCL Widget Pack Volume 1.0 contains the 14 Delphi VCL components along with their source code.  The programmer is free to use these components royalty free in their own applications.  The programmer may not, however distribute any source included on this disk, even if said source has been modified by the programmer, unless express permission is obtained from Indigo Software.
  27.  
  28. Support:
  29.  
  30. Any questions, comments, or suggestions regarding these components should be directed to:
  31.  
  32. Zane Rathwick
  33. Indigo Software
  34.  
  35. Internet:    ZaneR@aol.com
  36. CIS:    74633,1314
  37. WWW:    http://users.aol.com/indigosoft/vcl
  38.  
  39. Wherever possible, both 16 and 32-bit versions of the code have been supplied, for users of Delphi 1.0 and 2.0.  In some cases, the changes in the operating system precluded providing a 32-bit version.
  40.  
  41. Installing The Components
  42.  
  43. Two sets of components are included.  The 16-bit versions for Delphi 1.0 are in a self-extracting file called INSTAL16.EXE, and the 32-bit versions for Delphi 2.0 are in a self extracting file called INSTAL32.EXE.  Run the correct executable for your installation.  
  44.  
  45. You will be prompted for a location to extract the files to.  Set this location to the directory in which you your other Delphi add-ons, such as C:\DELPHI\ADDONS.  Once the files are extracted, start Delphi (if it is not already running), and install the component IW_REG.PAS.  A new tab will appear on your tool palette called Indigo Widgets, and the new components will be installed there.
  46.  
  47. Included Components:
  48.  
  49. TCards
  50. TDataComm
  51. TDiamondPad
  52. TDigitalLabel
  53. TDigitalMarquee
  54. TDragDrop
  55. TFlyout
  56. TGraphicPanel
  57. TImageAspect
  58. TMeter95
  59. TMinMax
  60. TMenuButton
  61. TRollBar
  62. TSysMenu
  63.  
  64. Below is a detailed listing of each component, its properties, events and methods.
  65.  
  66.  
  67.  TCards
  68.  
  69. Delphi 1.0 and 2.0
  70.  
  71. This VCL allows the user to easily create card games with Delphi.
  72.  
  73.  
  74. PROPERTIES
  75.  
  76. CardBack:         This is the style of the design used to draw the card when CardStyle is set to cdBack.
  77.     Possible values:
  78.     cbDiag     cbHatch         cbRobot 
  79.     cbRoses     cbGreenPlant     cbBluePlant 
  80.     cbLightFish     cbDarkFish     cbShell 
  81.     cbCastle     cbBeach        cbHand  
  82.  
  83. CardStyle:        This depicts how the card will be drawn.  Possible values are:
  84.      cdBack:       Draw card back design
  85.      cdFront:      Draw card front
  86.      cdO:              Draw placeholder card
  87.      cdX:              Draw invalid placeholder card
  88.  
  89. FaceValue:        This is the face value of the card (ie 1-13)
  90.  
  91. Selected:         When selected is true, card is drawn inversed, else card is drawn normal.
  92.  
  93. Suit:             Depicts what suit the given card is.  Possible values are:
  94.      suClubs
  95.      suDiamonds
  96.                  suHearts
  97.      suSpades
  98.  
  99. Value:            Depicts the value of the card using the formula:
  100.          Value:=FaceValue + (ord(Suit) * 13);
  101.                   Conversely:
  102.          FaceValue:=Value - (ord(Suit) * 13);
  103.  
  104. IsRed:            Boolean:  True if card is red, false otherwise        
  105.    
  106. IsFaceCard:       Boolean:  True if card value is > 10, false otherwise 
  107.  
  108.  
  109. USING TCARDS
  110.  
  111. To use this control, simply place it on your form, and edit the CardBack, CardStyle, Suit, and Value properties.
  112.  
  113. Sample Procedures:
  114.  
  115. procedure initdeck;
  116. var
  117.     i:integer;
  118. begin
  119.     {Initializes deck array, do once per program, or to reset}
  120.     {deck[1..52] is a global array}
  121.     for i:= 1 to 52 do
  122.         deck[i]:=i;
  123. end;
  124.  
  125.  
  126. procedure shuffledeck;
  127. var
  128.     i,j,k,temp:integer;
  129. begin
  130.     {deck[1..52] is a global array}
  131.     Randomize;
  132.     For i := 1 To 10 do
  133.         For j := 1 To 52 do
  134.         begin
  135.             k := trunc(1 + (52 * Random));
  136.             temp := deck[j];
  137.             deck[j] := deck[k];
  138.             deck[k] := temp;
  139.         end;
  140. end;
  141.  
  142.  
  143.  TDataComm
  144.  
  145. Delphi 1.0 
  146.  
  147. This VCL allows you to easily pass data between two applications running on the same computer without resorting to DDE.  Use it to share data, find out if another instance of your application is already running, or even to remotely control one application from another.
  148.  
  149.  
  150. PROPERTIES
  151.  
  152. Channel:              This is the channel you will be broadcasting your data over.  It is really a Windows message.  The default is WM_USER + 99, but I sugggest you change it so as not to conflict with other programs that may be using this control.  The value must be greater than WM_USER. 
  153.  
  154. Data:                 This is a longint, and represents the data to be sent.  This doesn't mean that you can only send 4 bytes of information, just typecast a pointer to your data as a long.  For example:
  155.  
  156.          Data := LongInt(pointer(MyBitmap));
  157.  
  158.          When sending a pointer to an object, make sure that the object won't be destroyed before the reciever has a chance to read the data.  The best way to do this is to only send pointers to global variables.
  159.  
  160. InData:              This is the longint received by the control.  Using the above example, to decode the data do the following:
  161.  
  162.           Image1.picture.assign(TBitmap(pointer(InData)));
  163.  
  164.         Note the use of Assign.  Always make a local copy of the data as soon as possible to reduce the chance of the data being destroyed before you are finished.
  165.  
  166.  
  167. METHODS
  168.  
  169. SendData:             This is what actually triggers the data being sent.
  170.  
  171.  
  172. EVENTS
  173.  
  174. OnReceiveData:    This event is fired when data is received over the specified channel.  At this point, InData will contain the LongInt received.
  175.  
  176.  
  177. USING TDataComm
  178.  
  179. To use this control, simply place it on your form, and set the Channel property to some unique value over WM_USER.
  180.  
  181. Suppose you want to send a structure containing names and addresses from one application to another (both applications must contain a TDataComm control set to the same channel).
  182.  
  183. First create the structure:
  184.  
  185. Type
  186.    TAddBook = Record
  187.    Name : String;
  188.    Address1 : String;
  189.    Address2 : String;
  190.    City : String;
  191.    State : String;
  192.    ZIP : String;
  193.    Phone : String;
  194.    Age : Integer;
  195.    Other : LongInt;
  196. end;
  197.  
  198. Var
  199.    MyAddress : TAddBook;
  200.  
  201. Next, send the Data:
  202.  
  203. procedure TForm1.Button1Click(Sender: TObject);
  204. begin
  205.    MyAddress.Name := 'Bob Jones';
  206.    MyAddress.Address1 := '1234 Main Street';
  207.    MyAddress.Address2 := 'Apt 4';
  208.    {...fill in the rest of the structure}
  209.    DataComm1.Data:=longint(pointer(MyAddress));
  210.    DataComm1.SendData;
  211. end;
  212.  
  213. In the receiving application, you should have the same structure as above defined.  Then, add the following code to the OnReceiveData event:
  214.  
  215. procedure TForm1.DataComm1OnReceiveData(Sender: TObject);
  216. var
  217.    AnAddress : TAddBook;
  218. begin
  219.    AnAddress := TAddBook(pointer(InData));
  220.    Label1.caption := AnAddress.Name;
  221.    {..., etc.}
  222. end;
  223.  
  224.  
  225. TDigMarquee and TDigLabel
  226.  
  227. Delphi 1.0 and 2.0
  228.  
  229. This VCL gives you a multi-color scrolling marquee with digital letters and flashing effects as well as a static digital label with multiple colors.
  230.  
  231.  TDIGMARQUEE
  232.  
  233.  
  234. PROPERTIES
  235.  
  236. Caption:          This is the text that will scroll across the control. A subset of the alphabet is supported, including all capital letters, numbers, and keyboard punctuation except ` and ~.
  237.  
  238.      Formatting commands are embedded into the caption to alter text colors and to toggle flashing text.  All commands are preceeded by a ~ character and are terminated with a space.  Multiple commands may be stacked after a single ~.  Available commands are:
  239.      ~1 :     (green text)
  240.      ~2 :     (red text)
  241.      ~3 :     (yellow text)
  242.                  ~4 :     (cyan text)
  243.                  ~5 :     (white text)
  244.                  ~f :     (toggle flashing text)
  245.  
  246.      Examples:
  247.      just plain green text
  248.             ~2 red text~1 , green text
  249.             ~5f white flashing text~4f , cyan non-flashing text
  250.  
  251.  
  252. Enabled:          This turns the timer on/off.  If it is disabled, no text is visible
  253.  
  254. FlashTicks:       This is the number of timer ticks between flashes of flashing text.  This is NOT milliseconds.  If the interval is set for 50, and FlashTicks is set for 5 then the letters will flash approx every every 250 milliseconds (5*50).  If set to 0 then no flashing occurs.  This only affects text flagged with ~f .
  255.  
  256. Interval:         This is the interval between timer ticks.  The smoothness of the scrolling text is a combination of the Interval and the Speed setting.
  257.  
  258. Loops:            This is the number of times the text will scroll across the control before it stops.  After it  reaches this number, the OnFinishScrolling event will be fired to allow you to reset the caption or Loops, or other variables.  This way, you can update the information like a stock ticker or a clock, or offer random tips, hints, or quotes.  A negative number will scroll indefinately
  259.  
  260. Speed:            This is the number of pixels to the left the text will move each timer tick.  The smoothness of the scrolling text is a combination of the Interval and the Speed setting.
  261.  
  262.  
  263. EVENTS
  264.  
  265. OnFinishScrolling:
  266.  
  267.      This event is fired after the text has scrolled by the number of times specified by Loops.  If Loops is negative, this event will never be called.
  268.  
  269. Example:
  270.  
  271. procedure TForm1.DigMarquee1FinishScrolling(Sender: TObject);
  272. begin
  273.    DigMarquee1.caption:='The time is: ~5f '+ timetostr(time);
  274.    DigMarquee1.loops:=1;
  275. end;
  276.  
  277.  
  278.  TDIGLABEL
  279.  
  280.  
  281. PROPERTIES
  282.  
  283. Caption:          This is the text that will scroll across the control.  A subset of the alphabet is supported, including all capital letters, numbers, and keyboard punctuation except ` and ~.
  284.  
  285.                   Formatting commands are embedded into the caption to alter text colors and to toggle flashing text.  All commands are preceeded by a ~ character and are terminated with a space.  Multiple commands may be stacked after a single ~.  Available commands are:
  286.      ~1 :     (green text)
  287.                  ~2 :     (red text)
  288.      ~3 :     (yellow text)
  289.      ~4 :     (cyan text)
  290.      ~5 :     (white text)
  291.                   ~f :     (toggle flashing text)
  292.  
  293.      Examples:
  294.                  just plain green text
  295.             ~2 red text~1 , green text
  296.  
  297.  
  298.  TDiamondPad
  299.  
  300. Delphi 1.0 and 2.0
  301.  
  302. This VCL a 4-way spinner type control.
  303.  
  304.  
  305. PROPERTIES
  306.  
  307. Delay:            If the Interval property is set, the OnFire event will fire every Interval# of milliseconds, as long as the mouse is pressed down on the control.  The Delay sets a delay in milliseconds before that starts to happen.
  308.  
  309. Interval:         If the Interval property is set, the OnFire event will fire every Interval# of milliseconds, as long as the mouse is pressed down on the control.
  310.  
  311. Size:             Two sizes of DiamondPads are available:
  312.     dsSmall (32x32) 
  313.     dsLarge (48x48)
  314.  
  315.  
  316. EVENTS
  317.  
  318. OnFire:           The OnFire event will be triggered immediately upon the user clicking the mouse on the control, and, if the Interval property is set, every Interval# of milliseconds, starting after a delay of Delay milliseconds.  When this event is called, you will be passed an ArrowPressed value which will be one of the following:
  319.      bpTop
  320.     bpRight
  321.     bpBottom
  322.     bpLeft.
  323.  
  324.  
  325.  
  326. Sample Event Procedure:
  327.  
  328. procedure TForm1.DiamondPad1Fire(Sender: TObject; ArrowPressed: TPressed);
  329. begin
  330.      case ArrowPressed of
  331.      bpTop:    {Add code here};
  332.      bpBottom: {Add code here};
  333.      bpLeft:   {Add code here};
  334.      bpRight:  {Add code here};
  335.      end;
  336. end;
  337.  
  338.  
  339.  TDragDrop
  340.  
  341. Delphi 1.0 and 2.0
  342.  
  343. This VCL allows you to make any windowed VCL a drag and drop target.  It also parses all dropped files into a convenient
  344. string list.
  345.  
  346.  
  347. PROPERTIES
  348.  
  349. Component:        This is the component that you want to accept dropped files.
  350.  
  351.  
  352. FileList:         This is a TStringList that will contain the name of all the dropped files.  
  353.  
  354.  
  355. EVENTS
  356.  
  357. ONFileDragDrop:
  358.  
  359.      This is the event that is fired when files are dropped on the control specified by the Component property.
  360.  
  361.  
  362. USING TDragDrop
  363.  
  364. To use TDragDrop, simply drop it on a form, and set the Component property to another control on the form (ie ListBox1).  Then in the OnFileDragDrop event, code to do what you will with the dropped files.  
  365.  
  366. For Example:
  367.  
  368. procedure TForm1.DragDrop1FileDragDrop(Sender: TObject);
  369. var
  370.    i:integer;
  371. begin
  372.    for i:=0 to DragDrop1.FileList.count-1 do
  373.       listbox1.items.add(DragDrop1.FileList[i]);
  374. end;
  375.  
  376.  
  377.  TFlyout
  378.  
  379. Delphi 1.0 and 2.0
  380.  
  381. This VCL gives you a flyout button similar to those found in image edition programs like Corel Draw or PhotoShop.  A set of
  382. flyout buttons acts similar to a two-dimentional array of radio buttons.  Like radio buttons, only one flyout button within a 
  383. group may be selected, however, when a flyout button is clicked, it expands to offer you more choices.
  384.  
  385.  
  386. PROPERTIES
  387.  
  388. ArrowColor:       To show that the button offers more choices, the flyout button draws an arrow in the lower right-hand corner.  This property allows you to select what color this arrow is drawn in.  
  389.  
  390.     Note that if NumGlyphs is set to 1 then the arrow won't be visible.
  391.  
  392.  
  393. AutoFlyout:       This property tells the flyout button to display its flyout every time the button is clicked, regardless of whether the value of that button is being changed or not.  This is useful for novice users who might be unaware of how a flyout button works.  By default, this property is set to false, and the user must click on a flyout button a second time to display the flyout.
  394.  
  395. Checked:          Similar to a radio button or checkbox, this property tells whether or not a given button is selected.
  396.  
  397. Glyphs:           This is the bitmap that is used to create the flyout  buttons.  This is similar to the glyph property of a Speedbutton in that multiple images (one for each  button on the flyout) are placed on a single bitmap.   Each image must be the same size.  The flyout button will divide the bitmap evenly by the number in the NumGlyphs property to create the flyout buttons.  Use the included sample glyphs as a template.
  398.  
  399. Index:            This is a zero-based number that tells which flyout button is currently selected.
  400.  
  401. NumGlyphs:        This is the number of images that are on the current Glyph, and also the number of buttons that are on the flyout.  The flyout button will try to guess this number when you load a new glyph, based upon dividing the width by the height, so if your images are square, you don't need to set this property.
  402.  
  403.  
  404. USING TFLYOUT
  405.  
  406. You use the flyout button like a radio button, except that it has an extra index property.  For example:
  407.  
  408.    If Flyout1.checked then
  409.       case flyout1.index of
  410.       0: {do something};
  411.       1: {do something else};
  412.       end
  413.    else if Flyout2.checked then
  414.       {... repeat as necessary}
  415.    end;
  416.  
  417. or you might code in the OnClick event handler like this:
  418.  
  419. procedure TForm1.Flyout1Click(Sender: TObject);
  420. begin
  421.    case flyout1.index of
  422.    0: {do something};
  423.    1: {do something else};
  424.    end;
  425. end;
  426.  
  427.  
  428.  TGraphicPanel
  429.  
  430. Delphi 1.0 and 2.0
  431.  
  432. The TGraphicPanel component is a specialized image control that displays panel effects without the overhead of the Panel component.  Useful when you want to visually group components, but don't need to physically group them.  The Graphic Panel has an optional Win-95 look, as well as seperate background and foreground colors.
  433.  
  434.  
  435. PROPERTIES
  436.  
  437. BackColor:        The BackColor property defines the color that will be used to draw sunken surfaces on the panel.
  438.  
  439. BevelInner:       A Graphic Panel component has two bevels, an outer bevel drawn next to the border of the control, and an inner bevel drawn inside the outer bevel. The width of the inner bevel is specified in the BevelWidth property in pixels.  The BevelInner property determines the style of the inner bevel of a Graphic Panel component. 
  440.  
  441.      These are the possible values:
  442.  
  443.      bsNone:           No inner bevel exists.
  444.      bsLowered:        The inner bevel is lowered.
  445.      bsRaised:         The inner bevel is raised.
  446.  
  447. BevelOuter:       A Graphic Panel component has two bevels, an outer bevel drawn next to the border of the control, and an inner  bevel drawn inside the outer bevel. The width of the inner bevel is specified in the BevelWidth property in pixels.  The BevelOuter property determines the style of the outer bevel of a Graphic Panel component. 
  448.  
  449.      These are the possible values:
  450.  
  451.      bsNone:           No outer bevel exists.
  452.      bsLowered:        The outer bevel is lowered.
  453.      bsRaised:         The outer bevel is raised.
  454.  
  455. BevelWidth:       The BevelWidth property determines the width in pixels between the inner and the outer bevels of a Graphic  Panel. 
  456.  
  457. ForeColor:        The ForeColor property defines the color that will be used to draw raised surfaces on the panel.
  458.  
  459. Win95Look:        The Win95Look property of the Graphic Panel control is a boolean value that toggles the appearance of the  panel between the standard Windows 3.1 look and that of Win 95.
  460.  
  461.  
  462.  TImageAspect
  463.  
  464. Delphi 1.0 and 2.0
  465.  
  466. The TImageAspect control is similar to the TImage control except that it sizes a picture in the correct aspect ratio, regardless of the size, instead of stretching the image to fit both horizontally and vertically.
  467.  
  468.  
  469. PROPERTIES
  470.  
  471. AutoSize:        If autosize is true, the TImageAspect control will resize to the original image's dimensions, otherwise, the image will be resized accordingly.
  472.  
  473.  
  474.  TMenuButton
  475.  
  476. Delphi 1.0 and 2.0
  477.  
  478. This VCL gives you a button that displays a popup menu when pressed.  The button looks similar to a SpeedButton, with an optional arrow to show the direction of the popup menu.
  479.  
  480.  
  481. PROPERTIES
  482.  
  483. ArrowColor:       To show that the button differs from a normal button, an optional arrow is drawn on the right side.  This property allows you to select what color this arrow is drawn in.
  484.  
  485.  
  486. Menu:             This property tells the button what popup menu you want displayed when the button is depressed.  
  487.  
  488. MenuAlignment:    
  489.     maBottom:  This causes the menu to popup aligned to the bottom-left corner of the button.
  490.     maRight:   This causes the menu to popup aligned to the top-right corner of the button.
  491.  
  492. ShowArrow:        This is a boolean that determines whether or not the arrow is drawn on the button.
  493.  
  494.  
  495.  TMeter95
  496.  
  497. Delphi 1.0 
  498.  
  499. This VCL gives you a progress meter similar to the one used in Win95.
  500.  
  501.  
  502. PROPERTIES
  503.  
  504. BackColor:        This is the color used to fill the background of the control.
  505.  
  506. Ctl3D:            This is a boolean value that toggles the 3D effects.
  507.  
  508. ForeColor:        This is the color used to draw the progress portion of the control.
  509.  
  510. Max:              This is the maximum value of the meter control, similar to the maximum value of a scrollbar.  It must be greater than zero.
  511.  
  512. Min:              This is the minimum value of the meter control, similar to the minimum value of a scrollbar.  It must be zero or greater.
  513.  
  514. Value:            This is the value (between Min and Max) of the meter control, similar the position property of a scrollbar.
  515.  
  516.  
  517.  TMinMax
  518.  
  519. Delphi 1.0 and 2.0
  520.  
  521. This VCL allows the user to easily set the minimum and maximum tracking sizes of their forms by intercepting 
  522. the WM_GETMINMAXINFO message.  
  523.  
  524. The WM_GETMINMAXINFO message is sent to a window whenever Windows needs the maximized position or 
  525. dimensions of the window or needs the maximum or minimum tracking size of the window. The maximized size of a 
  526. window is the size of the window when its borders are fully extended. The maximum tracking size of a window is 
  527. the largest window size that can be achieved by using the borders to size the window. The minimum tracking size of 
  528. a window is the smallest window size that can be achieved by using the borders to size the window. 
  529.  
  530.  
  531. PROPERTIES
  532.  
  533. MaxWidth:             This is the maximum width you want your form to be able to be sized to, even while maximized.  A setting of 0 will use the default size to be used.
  534.  
  535. MaxHeight:            This is the maximum height you want your form to be able to be sized to, even while maximized.  A setting of 0 will cause the default size to be used.
  536.  
  537. MinWidth:             This is the minimum width you want your form to be able to be sized to.  A setting of 0 will cause the default size to be used.
  538.  
  539. MinHeight:            This is the minimum height you want your form to be able to be sized to.  A setting of 0 will cause the default size to be used.
  540.  
  541.  
  542. USING TMinMax
  543.  
  544. To use this control, simply place it on your form, and edit the MaxWidth, MaxHeight, MinWidth, and MinHeight properties to whatever values you wish.
  545.  
  546.  
  547.  TRollBar
  548.  
  549. Delphi 1.0 and 2.0
  550.  
  551. The TRollBar Component gives your forms a mini title bar with optional roll-up capabilities.  Simply drop it on your form and run your program to have a fully functioning mini title bar, or set some of the properties to change the defaults.
  552.  
  553.  
  554. PROPERTIES
  555.  
  556. AllowRollup:    The AllowRollup property determines whether or not the form will roll up/down when the rollup button is clicked.
  557.  
  558. AnimateRollup:    The AnimateRollup property toggles the animation effect when the roll up/down button is clicked.  The AnimateSteps property must be greater than 1 for this to take effect.
  559.  
  560. AnimateSteps:    The AnimateSteps property determines the smothness and speed of the animation effect of the form rolling up/down.  The smoother the animation, the slower the effect.  The speed is based on the formula: 
  561.  
  562.     Speed:=Form.ClientHeight div AnimateSteps;
  563.  
  564.     The form will shrink/grow in increments of Speed until it is fully resized.
  565.  
  566. IsRolledUp:    The IsRolledUp property depicts whether or not the form is currently rolled up.  Run-Time only.
  567.  
  568. MaxHeight:    The MaxHeight property defines the maximum height a form will size to, even while maximized.
  569.  
  570. MaxWidth:    The MaxWidth property defines the maximum width a form will size to, even while maximized.
  571.  
  572. MinHeight:    The MinHeight property defines the minimum height a form will size to.
  573.  
  574. MinWidth:    The MinWidth property defines the minimum width a form will size to.
  575.  
  576. PopupMenu:    The PopupMenu property sets the menu that you want to use for the control menu.  This menu (if set) will automatically popup when the control box is clicked.
  577.  
  578. ShowClose:    The ShowClose property toggles whether or not the TRollBar displays the close form button.
  579.  
  580.     Warning:  Setting this property to false removes the user's ability to close this form unless some other mechanism (system menu or button) is provided.
  581.  
  582.     True:    The button is shown, and the user will be able to close the form by clicking on this button.
  583.  
  584.     False:    The button is not shown, and no form closing mechanism is provided.
  585.  
  586. ShowIcon:    The ShowIcon property toggles whether or not the TRollBar displays the application's icon on its left edge (the system menu).
  587.  
  588.     True:    The icon is shown, and the system menu (if set in the PopupMenu property) is available
  589.  
  590.     False:    The icon is not shown, and no system menu is available.
  591.  
  592. ShowMinimize:    The ShowRollup property toggles whether or not the TRollBar displays the minimize button.
  593.  
  594.     True:    The button is shown, and the user will be able to minimize the form by clicking on this button.
  595.  
  596.     False:    The button is not shown, and no minimization capabilities are available.
  597.  
  598. ShowRollup:    The ShowRollup property toggles whether or not the TRollBar displays the roll-up/roll-down button.
  599.  
  600.     True:    The button is shown, and the user will be able to roll-up the form to just the size of the title bar, or roll it back down to its previous size.
  601.  
  602.     False:    The button is not shown, and no roll-up/roll-down capabilities are available.
  603.  
  604.  
  605. EVENTS:
  606.  
  607. OnBeforeRollup:    This event is fired immediately before the form is to be rolled up/down.  Code here if you are using the GetMinMax message or something similar to limit the size of your form (ie MinHeight:=0).
  608.  
  609. OnAfterRollup:    This event is fired immediately after the form is rolled up/down.  Code here if you are using the GetMinMax message or something similar to limit the size of your form (ie MinHeight:=0).
  610.  
  611.  
  612.  TSysMenu
  613.  
  614. Delphi 1.0
  615.  
  616. This VCL allows the user to easily add menu items to the system menu of their programs.  In addition, upon selecting
  617. one of the added menu items, an event will be fired, passing a string containing the text of the menu item selected.
  618.  
  619.  
  620. PROPERTIES
  621.  
  622. InsertBefore:         This is the position on the system menu at which you want the new menu items placed. A value of -1 places the new items at the end
  623.  
  624. MenuItems:            This is a TStringList containing the menu items you wish to add to the system menu. A "-" character denotes a seperator bar.
  625.  
  626. StartID:              Each menu item must be assigned a unique ID#.  The StartID denotes the number to use for the first menu item; each item thereafter is incremented by one.
  627.  
  628.  
  629. EVENTS
  630.  
  631. OnFireMenu:           This event is fired when one of the added menu items has been selected.  A string will be passed to this event in the variable MenuCaption that contains the text of the menu item selected.
  632.  
  633.  
  634. USING TSysMenu
  635.  
  636. To use this control, simply place it on your form, and edit the MenuItems property to contain the menu items you wish to add.
  637.  
  638. Example:
  639.  
  640. -
  641. &About...
  642. &Help
  643.  
  644. In the above example, the hyphen will be a seperator bar, followed by two menu items.  Now change the InsertBefore property to 5.  This will insert the new menu before the 5th menu entry in the system menu (this menu is zero-based, so the first entry is zero, and so on).
  645.  
  646. Now your menu should look like this:
  647.  
  648. Restore
  649. Move
  650. Size
  651. Minimize
  652. Maximize
  653. -----------
  654. About...
  655. Help
  656. -----------
  657. Close
  658.  
  659. Double-click on the SysMenu control to edit its OnFireMenu event and alter its code as follows:
  660.  
  661. procedure TForm1.SysMenu1FireMenu(Sender: TObject; MenuCaption: String);
  662. begin
  663.      If MenuCaption = '&About...' then
  664.           {code here to handle this event...}
  665.      else If MenuCaption = '&Help' then
  666.           {code here to handle this event...};
  667. end;
  668.  
  669. Support:
  670.  
  671. Send comments and questions to:
  672.  
  673. Zane Rathwick
  674. Indigo Software
  675.  
  676. CIS: 74633,1314
  677. AOL: ZaneR
  678. Internet:   ZaneR@aol.com
  679. U.S. Mail:  Zane Rathwick
  680.             Indigo Software
  681.             4240 Park Newport Suite 308
  682.             Newport Beach, CA 92660
  683.  
  684. Registering the Indigo Widget Pack
  685.  
  686. To register the Indigo Widget Pack and receive source code, send $50 (+$2 S&H) to:
  687.  
  688. Indigo Software
  689. 4240 Park Newport # 308
  690. Newport Beach, CA 92660
  691.  
  692. Compuserve users may register on-line by going to keyword GO SWREG 
  693. and ordering product number 10850.
  694.  
  695. You can save the $2 shipping fee by specifying an internet 
  696. address to have your control sent to instead of by mail.